package dewu;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * 小A选糖
 * 小A在商店中买糖，现在有椰子糖和玉米糖两种糖，他希望他买的糖满足椰子糖的数量恰好比玉米糖的数量多 m 个。
 * 商店做促销，将椰子糖和玉米糖捆绑销售，货架上有 n 个糖罐排成一排，其中第 i 个糖罐中包含 ai 个椰子糖于 bi 个玉米汤，
 * 同时顾客只有购买连续的一段糖罐才能享受优惠（只买某一罐也被视为连续）。
 * 那么小A想知道，一共有几种购买方式才能在享受商店优惠的同时，也可以满足他的要求。
 * 即求有几对二元组(L, R), (L <= R)满足 (al + al+1 + .... ar) - (bl + bl+1 + .... br) = m
 * 第一行输入两个整数 n, m
 * 第二行输入n个整数ai
 * 第三行输入n个整数bi
 *
 * @author Liu Yicong
 * @date 2025/9/27
 */
/*
输入样例:
3 2
1 5 1
2 2 2
输出:
2
-1 3 -1
-1 2 1
合法的区间有(1,2)和(2,3)
输入样例:
5 4
1 2 3 4 5
5 4 3 2 1
输出:
2
合法的区间有(2,5)和(5,5)
 */



public class Algs4 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String[] s = sc.nextLine().split(" ");
		int n = Integer.decode(s[0]), m = Integer.decode(s[1]);
		// 如何优雅地将输入转换为一个int型的数组
		int[] a = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
		int[] b = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
		sc.close();
		System.out.println(countWays(n, m, a, b));
	}


	/**
	 * 区间和 + 哈希计数
	 * 记：
	 * diff[i] = ai - bi
	 * 那么问题就转化为：
	 * 找出多少个区间 [L, R] 满足：
	 * diff[L] + diff[L+1] + ... + diff[R] = m
	 * 用前缀和表示：
	 * prefix[0] = 0
	 * prefix[i] = diff[1] + diff[2] + ... + diff[i]   (i >= 1)
	 * 区间和即为：
	 * diff[L] + ... + diff[R] = prefix[R] - prefix[L-1]
	 * 只要满足：
	 * prefix[R] - prefix[L-1] = m
	 * => prefix[L-1] = prefix[R] - m
	 * 所以，只要我们遍历 R，统计前面出现过多少个 prefix[L-1] 等于 prefix[R] - m，累加即可。
	 */
	private static long countWays(int n, int m, int[] a, int[] b) {
		int[] diff = new int[n];
		for (int i = 0; i < n; i++) {
			diff[i] = a[i] - b[i];
		}
		long ans = 0;
		long prefix = 0;

		// 记录每个前缀和出现的次数
		Map<Long, Long> map = new HashMap<>();
		map.put(0L, 1L); // prefix[0] = 0 出现一次

		for (int i = 0; i < n; i++) {
			prefix += diff[i];

			// 我们想找 prefix[L-1] = prefix - m
			long need = prefix - m;
			if (map.containsKey(need)) {
				ans += map.get(need);
			}

			// 当前 prefix 也要记下来
			map.put(prefix, map.getOrDefault(prefix, 0L) + 1);
		}


		return ans;
	}
}
